package com.kensure.mycom.config.service;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import co.kensure.frame.JSBaseService;
import co.kensure.mem.CollectionUtils;

import com.kensure.mycom.config.dao.MyConfigDao;
import com.kensure.mycom.config.model.MyConfig;

/**
 * 配置信息服务实现类
 * 
 * @author fankd created on 2018-5-8
 * @since
 */
@Service
public class MyConfigService extends JSBaseService {

	private static Map<String, MyConfig> map = new HashMap<String, MyConfig>();

	@Resource
	private MyConfigDao dao;

	public MyConfig selectOne(String id) {
		return dao.selectOne(id);
	}

	public List<MyConfig> selectByIds(Collection<String> ids) {
		return dao.selectByIds(ids);
	}

	public List<MyConfig> selectAll() {
		return dao.selectAll();
	}

	public List<MyConfig> selectByWhere(Map<String, Object> parameters) {
		return dao.selectByWhere(parameters);
	}

	public long selectCount() {
		return dao.selectCount();
	}

	public long selectCountByWhere(Map<String, Object> parameters) {
		return dao.selectCountByWhere(parameters);
	}

	public boolean insert(MyConfig obj) {
		return dao.insert(obj);
	}

	public boolean insertInBatch(List<MyConfig> objs) {
		return dao.insertInBatch(objs);
	}

	public boolean update(MyConfig obj) {
		return dao.update(obj);
	}

	public boolean updateByMap(Map<String, Object> params) {
		return dao.updateByMap(params);
	}

	public void initCache() {
		map.clear();
		List<MyConfig> list = selectAll();
		if (CollectionUtils.isEmpty(list)) {
			return;
		}
		for (MyConfig my : list) {
			map.put(my.getId(), my);
		}
	}

	public void saveMyConfig(String id, String val) {
		MyConfig myConfig = map.get(id);
		myConfig.setVal(val);
		update(myConfig);
	}

	/**
	 * key value 模式，获取配置信息
	 * 
	 * @param id
	 * @return
	 */
	public static MyConfig getMyConfig(String id) {
		MyConfig myConfig = map.get(id);
		return myConfig;
	}

	/**
	 * key value 模式，获取配置信息,多个key，用逗号隔开
	 * 
	 * @param id
	 * @return
	 */
	public static List<MyConfig> getMultiMyConfig(String ids) {
		String[] keys = ids.split(",");
		List<MyConfig> l = new ArrayList<>();
		for (String key : keys) {
			l.add(getMyConfig(key));
		}
		return l;
	}

}
